/**
 * 
 */
package com.enjoyor.soa.traffic.api.service.dubbo.ovms;

import java.util.List;
import java.util.Map;

import com.enjoyor.soa.traffic.api.dto.ovms.LogUserDto;
import com.enjoyor.soa.traffic.api.dto.ovms.ViolationAnnexDto;
import com.enjoyor.soa.traffic.api.dto.ovms.ViolationInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * @author ly 违法数据操作类
 */
public interface DubboViolationService {

	/**
	 * 获取违法缓存数据列表
	 * 
	 * @param token
	 * @param systemkey
	 * @param map，需要查询空号牌传vehicle_plate
	 *            = -1
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationCacheList(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 获取违法缓存数据分页
	 * 
	 * @param token
	 * @param systemkey
	 * @param map，需要查询空号牌传vehicle_plate
	 *            = -1
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationCachePage(String token, String systemkey, Map map, LogUserDto logUser, Page page);

	/**
	 * 获取违法正式数据列表
	 * 
	 * @param token
	 * @param systemkey
	 * @param map，需要查询空号牌传vehicle_plate
	 *            = -1
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationDealList(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 获取违法正式数据分页
	 * 
	 * @param token
	 * @param systemkey
	 * @param map，需要查询空号牌传vehicle_plate
	 *            = -1
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationDealPage(String token, String systemkey, Map map, LogUserDto logUser, Page page);

	/**
	 * 获取违法废弃数据列表
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationDisuseList(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 获取违法废弃数据分页
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationDisusePage(String token, String systemkey, Map map, LogUserDto logUser, Page page);

	/**
	 * 获取违法历史数据列表
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationHisList(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 获取违法历史数据分页
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationHisPage(String token, String systemkey, Map map, LogUserDto logUser, Page page);

	/**
	 * 获取违法未启用数据列表
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationUnableList(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 获取违法未启用数据分页
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationUnablePage(String token, String systemkey, LogUserDto logUser, Map map, Page page);

	/**
	 * 获取军车违法列表
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationMilitaryList(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 获取军车违法列表分页
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationMilitaryPage(String token, String systemkey, LogUserDto logUser, Map map, Page page);

	/**
	 * 获取警车违法列表
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationPoliceList(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 获取警车违法列表分页
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getViolationPolicePage(String token, String systemkey, LogUserDto logUser, Map map, Page page);

	/**
	 * 获取违法编号对应的违法文件
	 * 
	 * @param token
	 * @param systemkey
	 * @param logUser
	 * @param ViolationId
	 * @return
	 */
	public ResultPojo getViolationAnnexList(String token, String systemkey, LogUserDto logUser, String Violation_id);

	/**
	 * 获取违法编号对应的违法文件
	 * 
	 * @param token
	 * @param systemKey
	 * @param logUser
	 * @param idList
	 * @return
	 */
	public ResultPojo getViolationAnnexListByIds(String token, String systemKey, LogUserDto logUser,
			List<String> idList);

	/**
	 * 获取昨日违法数据总量
	 * 
	 * @param token
	 * @param systemkey
	 * @return 昨日违法数据量 昨日有效违法数据 昨日有效上传数据
	 */
	public ResultPojo getViolationYesterdayCount(String token, String systemkey, LogUserDto logUser);

	/**
	 * 工作量统计，根据人员、设备类型分类
	 * 
	 * @param token
	 * @param systemkey
	 * @param map
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPersonWorkCount(String token, String systemkey, LogUserDto logUser, Map map);

	/**
	 * 新增违法数据
	 * 
	 * @param token
	 * @param systemkey
	 * @param logUser
	 * @param dto
	 * @return
	 */
	public ResultPojo insertViolation(String token, String systemkey, LogUserDto logUser, ViolationInfoDto dto);

	/**
	 * 新增违法数据文件
	 * 
	 * @param token
	 * @param systemkey
	 * @param logUser
	 * @param dto
	 * @return
	 */
	public ResultPojo insertViolationAnnex(String token, String systemkey, LogUserDto logUser, ViolationAnnexDto dto);

	/**
	 * 批量新增违法数据文件
	 * 
	 * @param token
	 * @param systemkey
	 * @param logUser
	 * @param list
	 * @return
	 */
	public ResultPojo insertViolationAnnexList(String token, String systemkey, LogUserDto logUser,
			List<ViolationAnnexDto> list);

	/**
	 * @param token
	 * @param systemkey
	 * @param logUser
	 * @param violation_id
	 * @param status
	 * @return
	 */
	public ResultPojo updateVioStatus(String token, String systemkey, LogUserDto logUser, String violation_id,
			String status);
}
